/**
 * Created by Dell on 2017/5/16.
 */
const experience = require('../models/experience');
const log = require('log4js').getLogger('experience');
const systemlogs = require('../models/systemlogs');
/**
 * app 新增现场
 * @param req
 * @param res
 */
exports.add = function(req, res){
    const args = req.body;
    // log.debug();

    let user = req.user;
    if(!args.title){
        return res.send({success:false,data:'请给现场添加个标题吧!'});
    }
    if(!args.desc){
        return res.send({success:false,data:'您的现场还没有说明呢！'});
    }
    if(!args.imgurl){
        return res.send({success:false,data:'请给您的现场加个图片或视频吧！'});
    }
    if(!args.starttime){
        return res.send({success:false,data:'您的现场是什么时候开始的呢！'});
    }
    if(!args.path){
        return res.send({success:false,data:'您上传的是配图还是视频？'});
    }
    // const imgUrl = args["imgurl[]"];
    const imgUrl = args.imgurl.split(','); //逗号分隔成数组
    let address = args.address;
    let location={};
    location.lat=args.lat;
    location.lng=args.lng;
    let point ={
        address,
        location
    };
    const params = [
        args.title,//现场标题
        args.desc,//现场描述
        1,//正常状态
        args.want?1:0,//是否想要（是就加1，不是就为0）
        args.own?1:0,//是否拥有（是就加1，不是就为0）
        new Date(),//创建时间
        new Date(args.starttime),//现场开始时间
        1,//未删除
        imgUrl,//现场配图
        req.user.id,//作者id
        req.user.username,//作者名字
        args.path,//视频还是图片
        args.address?point:null
    ];
    experience.add(params, args, user, function(err,result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'exit_title'){
            return res.send({success:false,data:'很抱歉，您添加的现场标题已经存在，请更换标题'});
        }else if(result == 'null'){
            return res.send({success:false,data:'很抱歉，您的用户信息有误，请重新登录'});
        }else if(result == 'fail'){
        }else {
            return res.send({success:true,data:'恭喜您，您添加的标题为 <<'+args.title+'>> 的现场成功'});
        }
    });
};

/**
 * 后台多条件查询现场列表
 * @param req
 * @param res
 */
exports.list_b = function(req, res){
    const args = req.query;
    const limit = Number(args.limit);
    const page = Number(args.page);
    let params = [];
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    }
    if(!page){
        return res.send({success:false,data:'请选择您当前处于的页数'});
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%');//根据关键字模糊查询
    }
    params.push(1);//未删除
    params.push(limit);
    params.push(limit*(page-1));//从第几条开始
    experience.list_b(params, args, function(err,result){//去models执行sql
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows});
        }
    });
};
/**
 * 后台多条件查询现场列表数据统计
 * @param req
 * @param res
 */
exports.count_b = function(req, res){
    const args = req.query;
    let params = [];
    if(args.keyword){
        params.push('%'+args.keyword+'%');//根据关键字模糊查询
    }
    params.push(1);
    experience.count_b(params, args, function(err,result){//去models执行sql
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,date:result.rowCount});//处理数据
        }
    });
};
/**
 * 后台批量编辑现场状态
 * @param req
 * @param res
 */
exports.ups_status = function(req, res){
    const args = req.body;
    if(!args.ids){//要编辑的分类的id的数组集合
        return res.send({succeaa:false,data:'请至少选择一张现场，进行编辑！'});
    }
    if(!args.status){//要编辑成的状态
        return res.send({success:false,data:'请选择状态进行编辑！'});
    }
    if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要编辑的现场id！'});
    }
    experience.upd_status(args, function(err,result){
        if(err){//报错
            return res.send({success:false,data:err});
        }else if(result.rowCount == 0){//失败
            return res.send({success:false,data:'很遗憾，您编辑现场状态失败！'});
        }else {
            let desc = req.user.username+'修改了一批现场的状态';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                9
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'恭喜您，编辑现场状态成功！'});
        }
    });
};
/**
 * 后台批量删除现场
 * @param req
 * @param res
 */
exports.remove = function(req, res){
    const args = req.body;
    if(!args.ids){
        return res.send({success:false,data:'请至少选择一篇现场进行删除'})
    };
    if(args.ids.constructor != Array){//删除的现场id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要删除的现场id！'});
    };
    experience.remove(args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'exit_del'){
            return res.send({success:false,data:'您删除的现场中，存在不可用现场'});
        }else {
            let desc = req.user.username+'删除了一批现场';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                9
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'删除现场成功'});
        }
    });
};
/**
 * app查询现场列表
 * @param req
 * @param res
 */
exports.list_app = function(req, res){
    const args = req.query;
    let params = [];
    const limit = Number(args.limit);
    const page = Number(args.page);
    if(args.userid){
        params.push(args.userid);
    }
    if(args.eid){
        params.push(args.eid);
    }
    params.push(1); //状态
    params.push(1); //未删除
    params.push(limit); //每页条数
    params.push((page-1)*limit); //从第几条开始

    experience.list_app(params, args, function(err, result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result});//返回结果
        }
    })
};
/**
 * app查询现场列表
 * @param req
 * @param res
 */
exports.others = function(req, res){
    const args = req.query;
    if(!args.eid){
        return res.send({success:false,data:'请选择体验'});
    }
    let params = [];
    params.push(args.eid);
    params.push(1); //状态
    params.push(1); //未删除
    experience.others(params, args, req, function(err, result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result});//返回结果
        }
    })
};
/**
 * 前后台现场详情
 * @param err
 * @param result
 */
exports.info = function(req, res){
    const args = req.query;
    if(!args.id){
        return res.send({success:false,data:"请选择您要查看的现场"});
    }
    const params = [
        args.id,
        1,
        1
    ];
    experience.info(params, args, function(err, result){//去models 中执行sql 语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'您查看的现场有误，请重新选择'});//返回详情
        }else{
            return res.send({success:true,data:result});//返回详情
        }
    });
};

/**
 * app 用户想要体验
 * @param req
 * @param res
 */
exports.want = function(req, res){
    const args = req.body;
    if(!args.experienceid){
        return res.send({success:false,data:'请选择您想要的体验'});
    }
    const params = [
        args.experienceid,//体验id
        req.user.id,//用户id
        3,
        new Date()
    ];
    experience.want(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_experience'){
            return res.send({success:false,fata:'没有该体验请再次确认'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,fata:'您已经对该体验添加想要，请不要重复添加'});
        }else if(result == null){
            return res.send({success:false,fata:'添加想要失败，请重试'});
        }else {
            return res.send({success:true,data:'恭喜您，对体验添加想要成功',info:result});
        }
    })
};

/**
 * app 用户添加拥有体验
 * @param req
 * @param res
 */
exports.own = function(req, res){
    const args = req.body;
    if(!args.experienceid){
        return res.send({success:false,data:'请选择您想要的体验'});
    }
    const params = [
        args.experienceid,//体验id
        req.user.id,//用户id
        3,
        new Date()
    ];
    experience.own(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_experience'){
            return res.send({success:false,fata:'没有该体验请再次确认'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,fata:'您已经对该体验添加拥有，请不要重复添加'});
        }else if(result == null){
            return res.send({success:false,fata:'添加拥有失败，请重试'});
        }else {
            return res.send({success:true,data:'恭喜您，对体验添加拥有成功',info:result});
        }
    });
};
/**
 * app 用户想要图片
 * @param req
 * @param res
 */
exports.unwant = function(req, res){
    const args = req.body;
    if(!args.experienceid){
        return res.send({success:false,data:'请选择您取消想要的体验'});
    }
    const params = [
        args.experienceid,//体验id
        req.user.id,//用户id
        3
    ];
    experience.unwant(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该体验请再次确认'});
        }else if(result == 'null_logs'){
            return res.send({success:false,fata:'您尚未对该体验添加想要'});
        }else if(result == null){
            return res.send({success:false,fata:'取消想要失败，请重试'});
        }else {
            return res.send({success:true,data:'取消想要成功',info:result});
        }
    })
};

/**
 * app 用户添加拥有体验
 * @param req
 * @param res
 */
exports.unown = function(req, res){
    const args = req.body;
    if(!args.experienceid){
        return res.send({success:false,data:'请选择您取消拥有的体验'});
    }
    const params = [
        args.experienceid,//体验id
        req.user.id,//用户id
        3
    ];
    experience.unown(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该体验请再次确认'});
        }else if(result == 'null_logs'){
            return res.send({success:false,fata:'您尚未对该体验添加拥有'});
        }else if(result == null){
            return res.send({success:false,fata:'取消拥有失败，请重试'});
        }else {
            return res.send({success:true,data:'取消拥有成功',info:result});
        }
    })
};